#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

struct ABC{
	int t,id;
	bool b;
}a[200005],b[200005];
int ansa[100005],ansb[100005];
int anss;
int na[100005],nb[100005];
int tra[100005],trb[100005];
int k,m,n;

int lowbit(int a)
{
	return a&-a;
}
void jia(int a,int x)
{
	for(;a<=m;a+=lowbit(a))
	{
		tra[a]+=x;
	}
	return;
}
void jib(int a,int x)
{
	for(;a<=n;a+=lowbit(a))
	{
		trb[a]+=x;
	}
	return;
}
int fia(int x)
{
	int ans=0;
	for(;x;x-=lowbit(x))
	{
		ans+=tra[x];
	}
	return ans;
}
int fib(int x)
{
	int ans=0;
	for(;x;x-=lowbit(x))
	{
		ans+=trb[x];
	}
	return ans;
}
bool cmp(ABC a,ABC b)
{
	return a.t<b.t;
}

int main()
{
	freopen("airport.in","r",stdin);
	freopen("airport.out","w",stdout);
	scanf("%d%d%d",&k,&m,&n);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&a[i*2-1].t,&a[i*2].t);
		a[i*2-1].b=0;
		a[i*2-1].id=i;
		a[i*2].b=1;
		a[i*2].id=i;
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&b[i*2-1].t,&b[i*2].t);
		b[i*2-1].b=0;
		b[i*2-1].id=i;
		b[i*2].b=1;
		b[i*2].id=i;
	}
	sort(a+1,a+2*m+1,cmp);
	sort(b+1,b+2*n+1,cmp);
	for(int i=1;i<=2*m;i++)
	{
		if(a[i].b)
		{
			jia(na[a[i].id],-1);
			continue;
		}
		int l=1,r=m;
		int mid;
		while(l<r)
		{
			mid=(l+r)>>1;
			if(fia(mid)<mid)	r=mid;
			else				l=mid+1;
		}
		++ansa[l];
		jia(l,1);
		na[a[i].id]=l;
	}
	for(int i=1;i<=2*n;i++)
	{
		if(b[i].b)
		{
			jib(nb[b[i].id],-1);
			continue;
		}
		int l=1,r=n;
		int mid;
		while(l<r)
		{
			mid=(l+r)>>1;
			if(fib(mid)<mid)	r=mid;
			else				l=mid+1;
		}
		++ansb[l];
		jib(l,1);
		nb[b[i].id]=l;
	}
	for(int i=1;i<=k;i++)
	{
		ansa[i]+=ansa[i-1];
		ansb[i]+=ansb[i-1];
	}
	for(int i=0;i<=k;i++)
	{
		anss=max(anss,ansa[i]+ansb[k-i]);
	}
	cout<<anss;
	return 0;
}
